/**
 * Copyright 2009 - ChunMap
 * 
 * 这个文件是ChunMap项目的一部分。
 * ChunMap是开源软件。
 * 你可以自由复制、传播本项目的下载包文件，但必须保持其完整性。
 * 我们不用对使用中的风险及由此造成的损失承担任何责任。
 * 详细情况请见《ChunMap许可协议》。

 * 想了解更多有关ChunMap的信息，请访问http://code.google.com/p/chunmap/
 */
package chunmap.orm.connect;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import chunmap.util.ChunDaoException;

/**
 * @author yangjiandong
 *
 */
public class DBUtils {
	public static boolean hasTable(Connection con, String table){
		try {
			DatabaseMetaData meta = con.getMetaData();
			if (checkHasTable(table, meta))
				return true;
			if (checkHasTable(table.toLowerCase(), meta))
				return true;
			if (checkHasTable(table.toUpperCase(), meta))
				return true;
			
		} catch (SQLException e) {
			throw new ChunDaoException(e);
		}
		return false;
	}

	private static boolean checkHasTable(String table, DatabaseMetaData meta)
			throws SQLException {
		boolean has = false;
		ResultSet rs = meta.getTables(null, null, table, null);
		if (rs.next()) {
			has = true;
		}
		colseResultSet(rs);
		return has;
	}
	
	public static Connection getConnection(String driver, String url, String userName,
			String passWord) {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			throw new ChunDaoException(e);
		}
		Connection connection;
		try {
			connection = DriverManager.getConnection(url, userName,
					passWord);
		} catch (SQLException e) {
			throw new ChunDaoException(e);
		}
		return connection;
	}
	
	public static void colseStatement(Statement stmt) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				throw new ChunDaoException(e);
			}
		}
	}

	public static void colseConnection(Connection con) {
		if (con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				throw new ChunDaoException(e);
			}
		}
	}

	public static void colseResultSet(ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				throw new ChunDaoException(e);
			}
		}
	}

}
